{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "ad52c147",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(5400, 7, 1) (6000,)\n"
     ]
    }
   ],
   "source": [
    "#import module\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "import seaborn as sns\n",
    "from sklearn.model_selection import train_test_split\n",
    "import tensorflow as tf\n",
    "from tensorflow import keras\n",
    "from tensorflow.keras import layers\n",
    "from tensorflow.keras.layers.experimental import preprocessing\n",
    "from tensorflow.keras.layers import Dense,PReLU,Dropout,Flatten\n",
    "plt.style.use([\"classic\"])\n",
    "import warnings\n",
    "warnings.filterwarnings(\"ignore\")\n",
    "\n",
    "\n",
    "# loading data\n",
    "data_loc = \"./\"\n",
    "data_digits1 =   np.loadtxt(data_loc + \"URQMD-SM-I-ba07-train.dat\")\n",
    "data_digits2 =   np.loadtxt(data_loc + \"URQMD-SM-I-ba07-test.dat\")\n",
    "train_X =  data_digits1[0:6000,0:-1]\n",
    "test_X  =  data_digits2[0:2000,0:-1]\n",
    "train_Y =  data_digits1[0:6000,-1]\n",
    "test_Y  =  data_digits2[0:2000,-1]\n",
    "\n",
    "\n",
    "\n",
    "train_X = train_X.astype('float32')\n",
    "train_X = train_X.reshape(-1,7,1)\n",
    "\n",
    "test_X = test_X.astype('float32')\n",
    "test_X = test_X.reshape(-1,7,1)\n",
    "\n",
    "\n",
    "train_X,valid_X,train_label,valid_label = train_test_split(train_X, train_Y, test_size=0.1, random_state=128)\n",
    "\n",
    "print(train_X.shape,train_Y.shape)\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "e01f1c2c",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Model: \"sequential_7\"\n",
      "_________________________________________________________________\n",
      " Layer (type)                Output Shape              Param #   \n",
      "=================================================================\n",
      " dense_28 (Dense)            (None, 7, 64)             128       \n",
      "                                                                 \n",
      " p_re_lu_21 (PReLU)          (None, 7, 64)             448       \n",
      "                                                                 \n",
      " dropout_21 (Dropout)        (None, 7, 64)             0         \n",
      "                                                                 \n",
      " dense_29 (Dense)            (None, 7, 64)             4160      \n",
      "                                                                 \n",
      " p_re_lu_22 (PReLU)          (None, 7, 64)             448       \n",
      "                                                                 \n",
      " dropout_22 (Dropout)        (None, 7, 64)             0         \n",
      "                                                                 \n",
      " flatten_7 (Flatten)         (None, 448)               0         \n",
      "                                                                 \n",
      " dense_30 (Dense)            (None, 64)                28736     \n",
      "                                                                 \n",
      " p_re_lu_23 (PReLU)          (None, 64)                64        \n",
      "                                                                 \n",
      " dropout_23 (Dropout)        (None, 64)                0         \n",
      "                                                                 \n",
      " dense_31 (Dense)            (None, 1)                 65        \n",
      "                                                                 \n",
      "=================================================================\n",
      "Total params: 34,049\n",
      "Trainable params: 34,049\n",
      "Non-trainable params: 0\n",
      "_________________________________________________________________\n",
      "WARNING:tensorflow:`period` argument is deprecated. Please use `save_freq` to specify the frequency in number of batches seen.\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "WARNING:tensorflow:`period` argument is deprecated. Please use `save_freq` to specify the frequency in number of batches seen.\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 1/100\n",
      "\n",
      "Testing loss: 10.629088401794434, acc: 2.6325888633728027\n",
      "\n",
      "\n",
      "Epoch 1: val_loss improved from inf to 10.44404, saving model to bim_DNN.h5\n",
      "43/43 - 1s - loss: 20.4537 - mae: 3.5364 - val_loss: 10.4440 - val_mae: 2.6244 - 993ms/epoch - 23ms/step\n",
      "Epoch 2/100\n",
      "\n",
      "Testing loss: 9.538000106811523, acc: 2.490649700164795\n",
      "\n",
      "\n",
      "Epoch 2: val_loss improved from 10.44404 to 9.34787, saving model to bim_DNN.h5\n",
      "43/43 - 0s - loss: 8.8649 - mae: 2.4787 - val_loss: 9.3479 - val_mae: 2.4792 - 279ms/epoch - 6ms/step\n",
      "Epoch 3/100\n",
      "\n",
      "Testing loss: 7.731472492218018, acc: 2.2602574825286865\n",
      "\n",
      "\n",
      "Epoch 3: val_loss improved from 9.34787 to 7.59468, saving model to bim_DNN.h5\n",
      "43/43 - 0s - loss: 7.3588 - mae: 2.2527 - val_loss: 7.5947 - val_mae: 2.2520 - 263ms/epoch - 6ms/step\n",
      "Epoch 4/100\n",
      "\n",
      "Testing loss: 2.6128721237182617, acc: 1.3994172811508179\n",
      "\n",
      "\n",
      "Epoch 4: val_loss improved from 7.59468 to 2.65242, saving model to bim_DNN.h5\n",
      "43/43 - 0s - loss: 5.3327 - mae: 1.9174 - val_loss: 2.6524 - val_mae: 1.4138 - 257ms/epoch - 6ms/step\n",
      "Epoch 5/100\n",
      "\n",
      "Testing loss: 0.74176424741745, acc: 0.7202054262161255\n",
      "\n",
      "\n",
      "Epoch 5: val_loss improved from 2.65242 to 0.77673, saving model to bim_DNN.h5\n",
      "43/43 - 0s - loss: 3.0090 - mae: 1.3946 - val_loss: 0.7767 - val_mae: 0.7434 - 259ms/epoch - 6ms/step\n",
      "Epoch 6/100\n",
      "\n",
      "Testing loss: 0.6007459163665771, acc: 0.6183741092681885\n",
      "\n",
      "\n",
      "Epoch 6: val_loss improved from 0.77673 to 0.60938, saving model to bim_DNN.h5\n",
      "43/43 - 0s - loss: 2.3921 - mae: 1.2420 - val_loss: 0.6094 - val_mae: 0.6263 - 279ms/epoch - 6ms/step\n",
      "Epoch 7/100\n",
      "\n",
      "Testing loss: 0.5560826659202576, acc: 0.5934492349624634\n",
      "\n",
      "\n",
      "Epoch 7: val_loss improved from 0.60938 to 0.55912, saving model to bim_DNN.h5\n",
      "43/43 - 0s - loss: 2.0780 - mae: 1.1618 - val_loss: 0.5591 - val_mae: 0.6004 - 263ms/epoch - 6ms/step\n",
      "Epoch 8/100\n",
      "\n",
      "Testing loss: 0.7964498996734619, acc: 0.7024666666984558\n",
      "\n",
      "\n",
      "Epoch 8: val_loss did not improve from 0.55912\n",
      "43/43 - 0s - loss: 1.8576 - mae: 1.0984 - val_loss: 0.7731 - val_mae: 0.6883 - 240ms/epoch - 6ms/step\n",
      "Epoch 9/100\n",
      "\n",
      "Testing loss: 0.559386134147644, acc: 0.5811910629272461\n",
      "\n",
      "\n",
      "Epoch 9: val_loss improved from 0.55912 to 0.54808, saving model to bim_DNN.h5\n",
      "43/43 - 0s - loss: 1.7331 - mae: 1.0596 - val_loss: 0.5481 - val_mae: 0.5722 - 247ms/epoch - 6ms/step\n",
      "Epoch 10/100\n",
      "\n",
      "Testing loss: 0.5523203015327454, acc: 0.5783970355987549\n",
      "\n",
      "\n",
      "Epoch 10: val_loss improved from 0.54808 to 0.53003, saving model to bim_DNN.h5\n",
      "43/43 - 0s - loss: 1.6517 - mae: 1.0384 - val_loss: 0.5300 - val_mae: 0.5628 - 278ms/epoch - 6ms/step\n",
      "Epoch 11/100\n",
      "\n",
      "Testing loss: 0.6208620667457581, acc: 0.6145651936531067\n",
      "\n",
      "\n",
      "Epoch 11: val_loss did not improve from 0.53003\n",
      "43/43 - 0s - loss: 1.5820 - mae: 1.0101 - val_loss: 0.5927 - val_mae: 0.5964 - 280ms/epoch - 7ms/step\n",
      "Epoch 12/100\n",
      "\n",
      "Testing loss: 0.5396097898483276, acc: 0.5730875134468079\n",
      "\n",
      "\n",
      "Epoch 12: val_loss improved from 0.53003 to 0.51552, saving model to bim_DNN.h5\n",
      "43/43 - 0s - loss: 1.5027 - mae: 0.9842 - val_loss: 0.5155 - val_mae: 0.5571 - 338ms/epoch - 8ms/step\n",
      "Epoch 13/100\n",
      "\n",
      "Testing loss: 0.626242458820343, acc: 0.6135103702545166\n",
      "\n",
      "\n",
      "Epoch 13: val_loss did not improve from 0.51552\n",
      "43/43 - 0s - loss: 1.4365 - mae: 0.9690 - val_loss: 0.5974 - val_mae: 0.5952 - 336ms/epoch - 8ms/step\n",
      "Epoch 14/100\n",
      "\n",
      "Testing loss: 0.6436316967010498, acc: 0.6211249828338623\n",
      "\n",
      "\n",
      "Epoch 14: val_loss did not improve from 0.51552\n",
      "43/43 - 0s - loss: 1.3773 - mae: 0.9461 - val_loss: 0.6117 - val_mae: 0.6017 - 318ms/epoch - 7ms/step\n",
      "Epoch 15/100\n",
      "\n",
      "Testing loss: 0.628655195236206, acc: 0.6093530058860779\n",
      "\n",
      "\n",
      "Epoch 15: val_loss did not improve from 0.51552\n",
      "43/43 - 0s - loss: 1.3506 - mae: 0.9350 - val_loss: 0.5965 - val_mae: 0.5893 - 286ms/epoch - 7ms/step\n",
      "Epoch 16/100\n",
      "\n",
      "Testing loss: 0.4497936964035034, acc: 0.521445631980896\n",
      "\n",
      "\n",
      "Epoch 16: val_loss improved from 0.51552 to 0.43215, saving model to bim_DNN.h5\n",
      "43/43 - 0s - loss: 1.2910 - mae: 0.9126 - val_loss: 0.4321 - val_mae: 0.5081 - 324ms/epoch - 8ms/step\n",
      "Epoch 17/100\n",
      "\n",
      "Testing loss: 0.48910149931907654, acc: 0.5383720993995667\n",
      "\n",
      "\n",
      "Epoch 17: val_loss did not improve from 0.43215\n",
      "43/43 - 0s - loss: 1.2178 - mae: 0.8906 - val_loss: 0.4663 - val_mae: 0.5220 - 317ms/epoch - 7ms/step\n",
      "Epoch 18/100\n",
      "\n",
      "Testing loss: 0.4733522832393646, acc: 0.5296961069107056\n",
      "\n",
      "\n",
      "Epoch 18: val_loss did not improve from 0.43215\n",
      "43/43 - 0s - loss: 1.2081 - mae: 0.8822 - val_loss: 0.4530 - val_mae: 0.5150 - 299ms/epoch - 7ms/step\n",
      "Epoch 19/100\n",
      "\n",
      "Testing loss: 0.4550906717777252, acc: 0.5228505730628967\n",
      "\n",
      "\n",
      "Epoch 19: val_loss did not improve from 0.43215\n",
      "43/43 - 0s - loss: 1.1897 - mae: 0.8775 - val_loss: 0.4400 - val_mae: 0.5111 - 306ms/epoch - 7ms/step\n",
      "Epoch 20/100\n",
      "\n",
      "Testing loss: 0.5300467014312744, acc: 0.5580979585647583\n",
      "\n",
      "\n",
      "Epoch 20: val_loss did not improve from 0.43215\n",
      "43/43 - 0s - loss: 1.1906 - mae: 0.8811 - val_loss: 0.5040 - val_mae: 0.5405 - 344ms/epoch - 8ms/step\n",
      "Epoch 21/100\n",
      "\n",
      "Testing loss: 0.4397132098674774, acc: 0.513629138469696\n",
      "\n",
      "\n",
      "Epoch 21: val_loss improved from 0.43215 to 0.42615, saving model to bim_DNN.h5\n",
      "43/43 - 0s - loss: 1.1391 - mae: 0.8535 - val_loss: 0.4262 - val_mae: 0.5036 - 323ms/epoch - 8ms/step\n",
      "Epoch 22/100\n",
      "\n",
      "Testing loss: 0.49576428532600403, acc: 0.5379241704940796\n",
      "\n",
      "\n",
      "Epoch 22: val_loss did not improve from 0.42615\n",
      "43/43 - 0s - loss: 1.1109 - mae: 0.8518 - val_loss: 0.4739 - val_mae: 0.5235 - 290ms/epoch - 7ms/step\n",
      "Epoch 23/100\n",
      "\n",
      "Testing loss: 0.4684360921382904, acc: 0.5260268449783325\n",
      "\n",
      "\n",
      "Epoch 23: val_loss did not improve from 0.42615\n",
      "43/43 - 0s - loss: 1.0848 - mae: 0.8420 - val_loss: 0.4494 - val_mae: 0.5143 - 336ms/epoch - 8ms/step\n",
      "Epoch 24/100\n",
      "\n",
      "Testing loss: 0.5392424464225769, acc: 0.560968816280365\n",
      "\n",
      "\n",
      "Epoch 24: val_loss did not improve from 0.42615\n",
      "43/43 - 0s - loss: 1.0762 - mae: 0.8328 - val_loss: 0.5125 - val_mae: 0.5462 - 345ms/epoch - 8ms/step\n",
      "Epoch 25/100\n",
      "\n",
      "Testing loss: 0.4241630733013153, acc: 0.5123491287231445\n",
      "\n",
      "\n",
      "Epoch 25: val_loss improved from 0.42615 to 0.41980, saving model to bim_DNN.h5\n",
      "43/43 - 0s - loss: 1.0471 - mae: 0.8257 - val_loss: 0.4198 - val_mae: 0.5122 - 295ms/epoch - 7ms/step\n",
      "Epoch 26/100\n",
      "\n",
      "Testing loss: 0.4318435490131378, acc: 0.5207273960113525\n",
      "\n",
      "\n",
      "Epoch 26: val_loss did not improve from 0.41980\n",
      "43/43 - 0s - loss: 1.0081 - mae: 0.8096 - val_loss: 0.4281 - val_mae: 0.5198 - 245ms/epoch - 6ms/step\n",
      "Epoch 27/100\n",
      "\n",
      "Testing loss: 0.43093496561050415, acc: 0.5064260363578796\n",
      "\n",
      "\n",
      "Epoch 27: val_loss improved from 0.41980 to 0.41822, saving model to bim_DNN.h5\n",
      "43/43 - 0s - loss: 0.9965 - mae: 0.8017 - val_loss: 0.4182 - val_mae: 0.4978 - 309ms/epoch - 7ms/step\n",
      "Epoch 28/100\n",
      "\n",
      "Testing loss: 0.4235873818397522, acc: 0.5039422512054443\n",
      "\n",
      "\n",
      "Epoch 28: val_loss improved from 0.41822 to 0.41250, saving model to bim_DNN.h5\n",
      "43/43 - 0s - loss: 0.9840 - mae: 0.7958 - val_loss: 0.4125 - val_mae: 0.4952 - 317ms/epoch - 7ms/step\n",
      "Epoch 29/100\n",
      "\n",
      "Testing loss: 0.4108182489871979, acc: 0.49728214740753174\n",
      "\n",
      "\n",
      "Epoch 29: val_loss improved from 0.41250 to 0.40140, saving model to bim_DNN.h5\n",
      "43/43 - 0s - loss: 0.9659 - mae: 0.7927 - val_loss: 0.4014 - val_mae: 0.4902 - 302ms/epoch - 7ms/step\n",
      "Epoch 30/100\n",
      "\n",
      "Testing loss: 0.41034266352653503, acc: 0.49697208404541016\n",
      "\n",
      "\n",
      "Epoch 30: val_loss improved from 0.40140 to 0.40124, saving model to bim_DNN.h5\n",
      "43/43 - 0s - loss: 0.9685 - mae: 0.7913 - val_loss: 0.4012 - val_mae: 0.4912 - 272ms/epoch - 6ms/step\n",
      "Epoch 31/100\n",
      "\n",
      "Testing loss: 0.40793830156326294, acc: 0.5000978112220764\n",
      "\n",
      "\n",
      "Epoch 31: val_loss improved from 0.40124 to 0.40084, saving model to bim_DNN.h5\n",
      "43/43 - 0s - loss: 0.9347 - mae: 0.7808 - val_loss: 0.4008 - val_mae: 0.4954 - 273ms/epoch - 6ms/step\n",
      "Epoch 32/100\n",
      "\n",
      "Testing loss: 0.4129706621170044, acc: 0.5088541507720947\n",
      "\n",
      "\n",
      "Epoch 32: val_loss did not improve from 0.40084\n",
      "43/43 - 0s - loss: 0.9420 - mae: 0.7869 - val_loss: 0.4099 - val_mae: 0.5103 - 230ms/epoch - 5ms/step\n",
      "Epoch 33/100\n",
      "\n",
      "Testing loss: 0.4155023694038391, acc: 0.5004135966300964\n",
      "\n",
      "\n",
      "Epoch 33: val_loss did not improve from 0.40084\n",
      "43/43 - 0s - loss: 0.9119 - mae: 0.7698 - val_loss: 0.4039 - val_mae: 0.4911 - 271ms/epoch - 6ms/step\n",
      "Epoch 34/100\n",
      "\n",
      "Testing loss: 0.4165591299533844, acc: 0.5026299357414246\n",
      "\n",
      "\n",
      "Epoch 34: val_loss did not improve from 0.40084\n",
      "43/43 - 0s - loss: 0.9158 - mae: 0.7732 - val_loss: 0.4024 - val_mae: 0.4894 - 257ms/epoch - 6ms/step\n",
      "Epoch 35/100\n",
      "\n",
      "Testing loss: 0.4061468243598938, acc: 0.501160204410553\n",
      "\n",
      "\n",
      "Epoch 35: val_loss improved from 0.40084 to 0.39794, saving model to bim_DNN.h5\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "43/43 - 0s - loss: 0.9055 - mae: 0.7684 - val_loss: 0.3979 - val_mae: 0.4949 - 249ms/epoch - 6ms/step\n",
      "Epoch 36/100\n",
      "\n",
      "Testing loss: 0.4255460202693939, acc: 0.5068628787994385\n",
      "\n",
      "\n",
      "Epoch 36: val_loss did not improve from 0.39794\n",
      "43/43 - 0s - loss: 0.8791 - mae: 0.7552 - val_loss: 0.4084 - val_mae: 0.4902 - 238ms/epoch - 6ms/step\n",
      "Epoch 37/100\n",
      "\n",
      "Testing loss: 0.40105459094047546, acc: 0.4973528981208801\n",
      "\n",
      "\n",
      "Epoch 37: val_loss improved from 0.39794 to 0.39081, saving model to bim_DNN.h5\n",
      "43/43 - 0s - loss: 0.9015 - mae: 0.7673 - val_loss: 0.3908 - val_mae: 0.4896 - 263ms/epoch - 6ms/step\n",
      "Epoch 38/100\n",
      "\n",
      "Testing loss: 0.45566272735595703, acc: 0.5209625959396362\n",
      "\n",
      "\n",
      "Epoch 38: val_loss did not improve from 0.39081\n",
      "43/43 - 0s - loss: 0.8715 - mae: 0.7508 - val_loss: 0.4338 - val_mae: 0.5057 - 239ms/epoch - 6ms/step\n",
      "Epoch 39/100\n",
      "\n",
      "Testing loss: 0.3939371407032013, acc: 0.4909645617008209\n",
      "\n",
      "\n",
      "Epoch 39: val_loss improved from 0.39081 to 0.38462, saving model to bim_DNN.h5\n",
      "43/43 - 0s - loss: 0.8624 - mae: 0.7462 - val_loss: 0.3846 - val_mae: 0.4873 - 238ms/epoch - 6ms/step\n",
      "Epoch 40/100\n",
      "\n",
      "Testing loss: 0.41082480549812317, acc: 0.49795910716056824\n",
      "\n",
      "\n",
      "Epoch 40: val_loss did not improve from 0.38462\n",
      "43/43 - 0s - loss: 0.8308 - mae: 0.7348 - val_loss: 0.3930 - val_mae: 0.4822 - 227ms/epoch - 5ms/step\n",
      "Epoch 41/100\n",
      "\n",
      "Testing loss: 0.3942219913005829, acc: 0.49167439341545105\n",
      "\n",
      "\n",
      "Epoch 41: val_loss improved from 0.38462 to 0.38141, saving model to bim_DNN.h5\n",
      "43/43 - 0s - loss: 0.8245 - mae: 0.7318 - val_loss: 0.3814 - val_mae: 0.4830 - 243ms/epoch - 6ms/step\n",
      "Epoch 42/100\n",
      "\n",
      "Testing loss: 0.4006466567516327, acc: 0.49911683797836304\n",
      "\n",
      "\n",
      "Epoch 42: val_loss did not improve from 0.38141\n",
      "43/43 - 0s - loss: 0.8195 - mae: 0.7265 - val_loss: 0.3868 - val_mae: 0.4876 - 233ms/epoch - 5ms/step\n",
      "Epoch 43/100\n",
      "\n",
      "Testing loss: 0.40560203790664673, acc: 0.5015714764595032\n",
      "\n",
      "\n",
      "Epoch 43: val_loss did not improve from 0.38141\n",
      "43/43 - 0s - loss: 0.8270 - mae: 0.7334 - val_loss: 0.3908 - val_mae: 0.4879 - 254ms/epoch - 6ms/step\n",
      "Epoch 44/100\n",
      "\n",
      "Testing loss: 0.39628416299819946, acc: 0.49501919746398926\n",
      "\n",
      "\n",
      "Epoch 44: val_loss did not improve from 0.38141\n",
      "43/43 - 0s - loss: 0.8254 - mae: 0.7309 - val_loss: 0.3825 - val_mae: 0.4845 - 238ms/epoch - 6ms/step\n",
      "Epoch 45/100\n",
      "\n",
      "Testing loss: 0.40323343873023987, acc: 0.49646666646003723\n",
      "\n",
      "\n",
      "Epoch 45: val_loss did not improve from 0.38141\n",
      "43/43 - 0s - loss: 0.7901 - mae: 0.7160 - val_loss: 0.3864 - val_mae: 0.4808 - 238ms/epoch - 6ms/step\n",
      "Epoch 46/100\n",
      "\n",
      "Testing loss: 0.39939236640930176, acc: 0.49261966347694397\n",
      "\n",
      "\n",
      "Epoch 46: val_loss did not improve from 0.38141\n",
      "43/43 - 0s - loss: 0.7968 - mae: 0.7164 - val_loss: 0.3815 - val_mae: 0.4764 - 226ms/epoch - 5ms/step\n",
      "Epoch 47/100\n",
      "\n",
      "Testing loss: 0.3932144343852997, acc: 0.4887011647224426\n",
      "\n",
      "\n",
      "Epoch 47: val_loss improved from 0.38141 to 0.37627, saving model to bim_DNN.h5\n",
      "43/43 - 0s - loss: 0.8023 - mae: 0.7219 - val_loss: 0.3763 - val_mae: 0.4756 - 262ms/epoch - 6ms/step\n",
      "Epoch 48/100\n",
      "\n",
      "Testing loss: 0.39696717262268066, acc: 0.49834591150283813\n",
      "\n",
      "\n",
      "Epoch 48: val_loss did not improve from 0.37627\n",
      "43/43 - 0s - loss: 0.7799 - mae: 0.7061 - val_loss: 0.3820 - val_mae: 0.4870 - 246ms/epoch - 6ms/step\n",
      "Epoch 49/100\n",
      "\n",
      "Testing loss: 0.39577001333236694, acc: 0.4981304705142975\n",
      "\n",
      "\n",
      "Epoch 49: val_loss did not improve from 0.37627\n",
      "43/43 - 0s - loss: 0.8065 - mae: 0.7168 - val_loss: 0.3818 - val_mae: 0.4885 - 233ms/epoch - 5ms/step\n",
      "Epoch 50/100\n",
      "\n",
      "Testing loss: 0.3975273370742798, acc: 0.4986882507801056\n",
      "\n",
      "\n",
      "Epoch 50: val_loss did not improve from 0.37627\n",
      "43/43 - 0s - loss: 0.7736 - mae: 0.7060 - val_loss: 0.3832 - val_mae: 0.4874 - 234ms/epoch - 5ms/step\n",
      "Epoch 51/100\n",
      "\n",
      "Testing loss: 0.3944830000400543, acc: 0.48945748805999756\n",
      "\n",
      "\n",
      "Epoch 51: val_loss improved from 0.37627 to 0.37472, saving model to bim_DNN.h5\n",
      "43/43 - 0s - loss: 0.7644 - mae: 0.7065 - val_loss: 0.3747 - val_mae: 0.4723 - 248ms/epoch - 6ms/step\n",
      "Epoch 52/100\n",
      "\n",
      "Testing loss: 0.40290582180023193, acc: 0.5037805438041687\n",
      "\n",
      "\n",
      "Epoch 52: val_loss did not improve from 0.37472\n",
      "43/43 - 0s - loss: 0.7938 - mae: 0.7157 - val_loss: 0.3862 - val_mae: 0.4896 - 261ms/epoch - 6ms/step\n",
      "Epoch 53/100\n",
      "\n",
      "Testing loss: 0.40509340167045593, acc: 0.5036336183547974\n",
      "\n",
      "\n",
      "Epoch 53: val_loss did not improve from 0.37472\n",
      "43/43 - 0s - loss: 0.7723 - mae: 0.7030 - val_loss: 0.3869 - val_mae: 0.4871 - 259ms/epoch - 6ms/step\n",
      "Epoch 54/100\n",
      "\n",
      "Testing loss: 0.39918583631515503, acc: 0.4907243251800537\n",
      "\n",
      "\n",
      "Epoch 54: val_loss did not improve from 0.37472\n",
      "43/43 - 0s - loss: 0.7338 - mae: 0.6914 - val_loss: 0.3768 - val_mae: 0.4698 - 241ms/epoch - 6ms/step\n",
      "Epoch 55/100\n",
      "\n",
      "Testing loss: 0.3900291919708252, acc: 0.4889838993549347\n",
      "\n",
      "\n",
      "Epoch 55: val_loss improved from 0.37472 to 0.37130, saving model to bim_DNN.h5\n",
      "43/43 - 0s - loss: 0.7360 - mae: 0.6896 - val_loss: 0.3713 - val_mae: 0.4733 - 246ms/epoch - 6ms/step\n",
      "Epoch 56/100\n",
      "\n",
      "Testing loss: 0.3886274993419647, acc: 0.4872409403324127\n",
      "\n",
      "\n",
      "Epoch 56: val_loss improved from 0.37130 to 0.36906, saving model to bim_DNN.h5\n",
      "43/43 - 0s - loss: 0.7640 - mae: 0.7048 - val_loss: 0.3691 - val_mae: 0.4714 - 253ms/epoch - 6ms/step\n",
      "Epoch 57/100\n",
      "\n",
      "Testing loss: 0.3839735984802246, acc: 0.4840802848339081\n",
      "\n",
      "\n",
      "Epoch 57: val_loss improved from 0.36906 to 0.36496, saving model to bim_DNN.h5\n",
      "43/43 - 0s - loss: 0.7570 - mae: 0.7015 - val_loss: 0.3650 - val_mae: 0.4703 - 247ms/epoch - 6ms/step\n",
      "Epoch 58/100\n",
      "\n",
      "Testing loss: 0.39279690384864807, acc: 0.4941486418247223\n",
      "\n",
      "\n",
      "Epoch 58: val_loss did not improve from 0.36496\n",
      "43/43 - 0s - loss: 0.7430 - mae: 0.6939 - val_loss: 0.3750 - val_mae: 0.4807 - 241ms/epoch - 6ms/step\n",
      "Epoch 59/100\n",
      "\n",
      "Testing loss: 0.40448299050331116, acc: 0.49133193492889404\n",
      "\n",
      "\n",
      "Epoch 59: val_loss did not improve from 0.36496\n",
      "43/43 - 0s - loss: 0.7286 - mae: 0.6879 - val_loss: 0.3793 - val_mae: 0.4699 - 231ms/epoch - 5ms/step\n",
      "Epoch 60/100\n",
      "\n",
      "Testing loss: 0.39702436327934265, acc: 0.49217671155929565\n",
      "\n",
      "\n",
      "Epoch 60: val_loss did not improve from 0.36496\n",
      "43/43 - 0s - loss: 0.7183 - mae: 0.6784 - val_loss: 0.3743 - val_mae: 0.4712 - 239ms/epoch - 6ms/step\n",
      "Epoch 61/100\n",
      "\n",
      "Testing loss: 0.40649500489234924, acc: 0.5065698027610779\n",
      "\n",
      "\n",
      "Epoch 61: val_loss did not improve from 0.36496\n",
      "43/43 - 0s - loss: 0.7293 - mae: 0.6896 - val_loss: 0.3946 - val_mae: 0.5027 - 232ms/epoch - 5ms/step\n",
      "Epoch 62/100\n",
      "\n",
      "Testing loss: 0.3949233889579773, acc: 0.49613821506500244\n",
      "\n",
      "\n",
      "Epoch 62: val_loss did not improve from 0.36496\n",
      "43/43 - 0s - loss: 0.7361 - mae: 0.6906 - val_loss: 0.3815 - val_mae: 0.4889 - 350ms/epoch - 8ms/step\n",
      "Epoch 63/100\n",
      "\n",
      "Testing loss: 0.39649859070777893, acc: 0.4986594617366791\n",
      "\n",
      "\n",
      "Epoch 63: val_loss did not improve from 0.36496\n",
      "43/43 - 0s - loss: 0.7388 - mae: 0.6885 - val_loss: 0.3804 - val_mae: 0.4880 - 251ms/epoch - 6ms/step\n",
      "Epoch 64/100\n",
      "\n",
      "Testing loss: 0.3922424912452698, acc: 0.4928712844848633\n",
      "\n",
      "\n",
      "Epoch 64: val_loss did not improve from 0.36496\n",
      "43/43 - 0s - loss: 0.7086 - mae: 0.6776 - val_loss: 0.3729 - val_mae: 0.4775 - 249ms/epoch - 6ms/step\n",
      "Epoch 65/100\n",
      "\n",
      "Testing loss: 0.38820958137512207, acc: 0.4891410171985626\n",
      "\n",
      "\n",
      "Epoch 65: val_loss did not improve from 0.36496\n",
      "43/43 - 0s - loss: 0.7100 - mae: 0.6757 - val_loss: 0.3700 - val_mae: 0.4755 - 263ms/epoch - 6ms/step\n",
      "Epoch 66/100\n",
      "\n",
      "Testing loss: 0.39250195026397705, acc: 0.4903624355792999\n",
      "\n",
      "\n",
      "Epoch 66: val_loss did not improve from 0.36496\n",
      "43/43 - 0s - loss: 0.7221 - mae: 0.6821 - val_loss: 0.3712 - val_mae: 0.4727 - 262ms/epoch - 6ms/step\n",
      "Epoch 67/100\n",
      "\n",
      "Testing loss: 0.39163607358932495, acc: 0.4870012700557709\n",
      "\n",
      "\n",
      "Epoch 67: val_loss did not improve from 0.36496\n",
      "43/43 - 0s - loss: 0.7020 - mae: 0.6727 - val_loss: 0.3685 - val_mae: 0.4668 - 341ms/epoch - 8ms/step\n",
      "Epoch 68/100\n",
      "\n",
      "Testing loss: 0.39676472544670105, acc: 0.4925578832626343\n",
      "\n",
      "\n",
      "Epoch 68: val_loss did not improve from 0.36496\n",
      "43/43 - 0s - loss: 0.7114 - mae: 0.6794 - val_loss: 0.3755 - val_mae: 0.4735 - 337ms/epoch - 8ms/step\n",
      "Epoch 69/100\n",
      "\n",
      "Testing loss: 0.3940621018409729, acc: 0.4955471158027649\n",
      "\n",
      "\n",
      "Epoch 69: val_loss did not improve from 0.36496\n",
      "43/43 - 0s - loss: 0.7158 - mae: 0.6832 - val_loss: 0.3737 - val_mae: 0.4792 - 304ms/epoch - 7ms/step\n",
      "Epoch 70/100\n",
      "\n",
      "Testing loss: 0.3981229066848755, acc: 0.4879055619239807\n",
      "\n",
      "\n",
      "Epoch 70: val_loss did not improve from 0.36496\n",
      "43/43 - 0s - loss: 0.7124 - mae: 0.6824 - val_loss: 0.3728 - val_mae: 0.4663 - 326ms/epoch - 8ms/step\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 71/100\n",
      "\n",
      "Testing loss: 0.40936192870140076, acc: 0.5110748410224915\n",
      "\n",
      "\n",
      "Epoch 71: val_loss did not improve from 0.36496\n",
      "43/43 - 0s - loss: 0.6943 - mae: 0.6749 - val_loss: 0.3949 - val_mae: 0.5017 - 303ms/epoch - 7ms/step\n",
      "Epoch 72/100\n",
      "\n",
      "Testing loss: 0.39021068811416626, acc: 0.49234652519226074\n",
      "\n",
      "\n",
      "Epoch 72: val_loss did not improve from 0.36496\n",
      "43/43 - 0s - loss: 0.6994 - mae: 0.6737 - val_loss: 0.3715 - val_mae: 0.4794 - 289ms/epoch - 7ms/step\n",
      "Epoch 73/100\n",
      "\n",
      "Testing loss: 0.4109284281730652, acc: 0.5122913122177124\n",
      "\n",
      "\n",
      "Epoch 73: val_loss did not improve from 0.36496\n",
      "43/43 - 0s - loss: 0.7043 - mae: 0.6733 - val_loss: 0.3956 - val_mae: 0.5036 - 311ms/epoch - 7ms/step\n",
      "Epoch 74/100\n",
      "\n",
      "Testing loss: 0.3977552652359009, acc: 0.4999512732028961\n",
      "\n",
      "\n",
      "Epoch 74: val_loss did not improve from 0.36496\n",
      "43/43 - 0s - loss: 0.6819 - mae: 0.6676 - val_loss: 0.3799 - val_mae: 0.4875 - 299ms/epoch - 7ms/step\n",
      "Epoch 75/100\n",
      "\n",
      "Testing loss: 0.41055017709732056, acc: 0.5106293559074402\n",
      "\n",
      "\n",
      "Epoch 75: val_loss did not improve from 0.36496\n",
      "43/43 - 0s - loss: 0.6997 - mae: 0.6741 - val_loss: 0.3993 - val_mae: 0.5058 - 285ms/epoch - 7ms/step\n",
      "Epoch 76/100\n",
      "\n",
      "Testing loss: 0.4027308523654938, acc: 0.5045930743217468\n",
      "\n",
      "\n",
      "Epoch 76: val_loss did not improve from 0.36496\n",
      "43/43 - 0s - loss: 0.6826 - mae: 0.6658 - val_loss: 0.3897 - val_mae: 0.4972 - 327ms/epoch - 8ms/step\n",
      "Epoch 77/100\n",
      "\n",
      "Testing loss: 0.3941464424133301, acc: 0.4959048330783844\n",
      "\n",
      "\n",
      "Epoch 77: val_loss did not improve from 0.36496\n",
      "43/43 - 0s - loss: 0.7127 - mae: 0.6807 - val_loss: 0.3761 - val_mae: 0.4829 - 304ms/epoch - 7ms/step\n",
      "Epoch 78/100\n",
      "\n",
      "Testing loss: 0.38199329376220703, acc: 0.4826280474662781\n",
      "\n",
      "\n",
      "Epoch 78: val_loss improved from 0.36496 to 0.36211, saving model to bim_DNN.h5\n",
      "43/43 - 0s - loss: 0.6833 - mae: 0.6633 - val_loss: 0.3621 - val_mae: 0.4681 - 341ms/epoch - 8ms/step\n",
      "Epoch 79/100\n",
      "\n",
      "Testing loss: 0.3846011459827423, acc: 0.48557248711586\n",
      "\n",
      "\n",
      "Epoch 79: val_loss did not improve from 0.36211\n",
      "43/43 - 0s - loss: 0.6995 - mae: 0.6697 - val_loss: 0.3647 - val_mae: 0.4713 - 308ms/epoch - 7ms/step\n",
      "Epoch 80/100\n",
      "\n",
      "Testing loss: 0.4049277901649475, acc: 0.5067409873008728\n",
      "\n",
      "\n",
      "Epoch 80: val_loss did not improve from 0.36211\n",
      "43/43 - 0s - loss: 0.6901 - mae: 0.6681 - val_loss: 0.3897 - val_mae: 0.4987 - 323ms/epoch - 8ms/step\n",
      "Epoch 81/100\n",
      "\n",
      "Testing loss: 0.3822639286518097, acc: 0.47980958223342896\n",
      "\n",
      "\n",
      "Epoch 81: val_loss improved from 0.36211 to 0.36116, saving model to bim_DNN.h5\n",
      "43/43 - 0s - loss: 0.6849 - mae: 0.6649 - val_loss: 0.3612 - val_mae: 0.4638 - 281ms/epoch - 7ms/step\n",
      "Epoch 82/100\n",
      "\n",
      "Testing loss: 0.41337719559669495, acc: 0.4943835139274597\n",
      "\n",
      "\n",
      "Epoch 82: val_loss did not improve from 0.36116\n",
      "43/43 - 0s - loss: 0.6499 - mae: 0.6434 - val_loss: 0.3842 - val_mae: 0.4701 - 301ms/epoch - 7ms/step\n",
      "Epoch 83/100\n",
      "\n",
      "Testing loss: 0.40630099177360535, acc: 0.49529168009757996\n",
      "\n",
      "\n",
      "Epoch 83: val_loss did not improve from 0.36116\n",
      "43/43 - 0s - loss: 0.6676 - mae: 0.6580 - val_loss: 0.3791 - val_mae: 0.4706 - 274ms/epoch - 6ms/step\n",
      "Epoch 84/100\n",
      "\n",
      "Testing loss: 0.38139426708221436, acc: 0.4835295081138611\n",
      "\n",
      "\n",
      "Epoch 84: val_loss did not improve from 0.36116\n",
      "43/43 - 0s - loss: 0.6803 - mae: 0.6663 - val_loss: 0.3621 - val_mae: 0.4698 - 258ms/epoch - 6ms/step\n",
      "Epoch 85/100\n",
      "\n",
      "Testing loss: 0.38117438554763794, acc: 0.4798940122127533\n",
      "\n",
      "\n",
      "Epoch 85: val_loss improved from 0.36116 to 0.35964, saving model to bim_DNN.h5\n",
      "43/43 - 0s - loss: 0.6620 - mae: 0.6542 - val_loss: 0.3596 - val_mae: 0.4635 - 288ms/epoch - 7ms/step\n",
      "Epoch 86/100\n",
      "\n",
      "Testing loss: 0.3886219561100006, acc: 0.4829331934452057\n",
      "\n",
      "\n",
      "Epoch 86: val_loss did not improve from 0.35964\n",
      "43/43 - 0s - loss: 0.7039 - mae: 0.6739 - val_loss: 0.3639 - val_mae: 0.4639 - 293ms/epoch - 7ms/step\n",
      "Epoch 87/100\n",
      "\n",
      "Testing loss: 0.38438770174980164, acc: 0.48477545380592346\n",
      "\n",
      "\n",
      "Epoch 87: val_loss did not improve from 0.35964\n",
      "43/43 - 0s - loss: 0.6797 - mae: 0.6650 - val_loss: 0.3623 - val_mae: 0.4672 - 313ms/epoch - 7ms/step\n",
      "Epoch 88/100\n",
      "\n",
      "Testing loss: 0.38376572728157043, acc: 0.4825069010257721\n",
      "\n",
      "\n",
      "Epoch 88: val_loss did not improve from 0.35964\n",
      "43/43 - 0s - loss: 0.6648 - mae: 0.6525 - val_loss: 0.3618 - val_mae: 0.4649 - 279ms/epoch - 6ms/step\n",
      "Epoch 89/100\n",
      "\n",
      "Testing loss: 0.3817537724971771, acc: 0.481876403093338\n",
      "\n",
      "\n",
      "Epoch 89: val_loss did not improve from 0.35964\n",
      "43/43 - 0s - loss: 0.6539 - mae: 0.6494 - val_loss: 0.3605 - val_mae: 0.4646 - 274ms/epoch - 6ms/step\n",
      "Epoch 90/100\n",
      "\n",
      "Testing loss: 0.42436328530311584, acc: 0.524686336517334\n",
      "\n",
      "\n",
      "Epoch 90: val_loss did not improve from 0.35964\n",
      "43/43 - 0s - loss: 0.6699 - mae: 0.6629 - val_loss: 0.4055 - val_mae: 0.5102 - 253ms/epoch - 6ms/step\n",
      "Epoch 91/100\n",
      "\n",
      "Testing loss: 0.38365286588668823, acc: 0.48068907856941223\n",
      "\n",
      "\n",
      "Epoch 91: val_loss did not improve from 0.35964\n",
      "43/43 - 0s - loss: 0.6486 - mae: 0.6503 - val_loss: 0.3601 - val_mae: 0.4618 - 265ms/epoch - 6ms/step\n",
      "Epoch 92/100\n",
      "\n",
      "Testing loss: 0.3815002739429474, acc: 0.48369574546813965\n",
      "\n",
      "\n",
      "Epoch 92: val_loss did not improve from 0.35964\n",
      "43/43 - 0s - loss: 0.6477 - mae: 0.6475 - val_loss: 0.3645 - val_mae: 0.4715 - 262ms/epoch - 6ms/step\n",
      "Epoch 93/100\n",
      "\n",
      "Testing loss: 0.39663729071617126, acc: 0.4914981424808502\n",
      "\n",
      "\n",
      "Epoch 93: val_loss did not improve from 0.35964\n",
      "43/43 - 0s - loss: 0.6630 - mae: 0.6572 - val_loss: 0.3724 - val_mae: 0.4697 - 344ms/epoch - 8ms/step\n",
      "Epoch 94/100\n",
      "\n",
      "Testing loss: 0.39007750153541565, acc: 0.49129876494407654\n",
      "\n",
      "\n",
      "Epoch 94: val_loss did not improve from 0.35964\n",
      "43/43 - 0s - loss: 0.6665 - mae: 0.6575 - val_loss: 0.3671 - val_mae: 0.4725 - 301ms/epoch - 7ms/step\n",
      "Epoch 95/100\n",
      "\n",
      "Testing loss: 0.37631821632385254, acc: 0.4762149155139923\n",
      "\n",
      "\n",
      "Epoch 95: val_loss improved from 0.35964 to 0.35541, saving model to bim_DNN.h5\n",
      "43/43 - 0s - loss: 0.6431 - mae: 0.6467 - val_loss: 0.3554 - val_mae: 0.4620 - 294ms/epoch - 7ms/step\n",
      "Epoch 96/100\n",
      "\n",
      "Testing loss: 0.3985406160354614, acc: 0.5007703304290771\n",
      "\n",
      "\n",
      "Epoch 96: val_loss did not improve from 0.35541\n",
      "43/43 - 0s - loss: 0.6473 - mae: 0.6525 - val_loss: 0.3837 - val_mae: 0.4927 - 289ms/epoch - 7ms/step\n",
      "Epoch 97/100\n",
      "\n",
      "Testing loss: 0.38627830147743225, acc: 0.4839146137237549\n",
      "\n",
      "\n",
      "Epoch 97: val_loss did not improve from 0.35541\n",
      "43/43 - 0s - loss: 0.6604 - mae: 0.6553 - val_loss: 0.3630 - val_mae: 0.4648 - 275ms/epoch - 6ms/step\n",
      "Epoch 98/100\n",
      "\n",
      "Testing loss: 0.3921132981777191, acc: 0.4944084882736206\n",
      "\n",
      "\n",
      "Epoch 98: val_loss did not improve from 0.35541\n",
      "43/43 - 0s - loss: 0.6478 - mae: 0.6453 - val_loss: 0.3705 - val_mae: 0.4780 - 296ms/epoch - 7ms/step\n",
      "Epoch 99/100\n",
      "\n",
      "Testing loss: 0.3816952109336853, acc: 0.47942009568214417\n",
      "\n",
      "\n",
      "Epoch 99: val_loss did not improve from 0.35541\n",
      "43/43 - 0s - loss: 0.6315 - mae: 0.6402 - val_loss: 0.3593 - val_mae: 0.4617 - 305ms/epoch - 7ms/step\n",
      "Epoch 100/100\n",
      "\n",
      "Testing loss: 0.3968724012374878, acc: 0.4998047351837158\n",
      "\n",
      "\n",
      "Epoch 100: val_loss did not improve from 0.35541\n",
      "43/43 - 0s - loss: 0.6456 - mae: 0.6468 - val_loss: 0.3798 - val_mae: 0.4884 - 255ms/epoch - 6ms/step\n"
     ]
    }
   ],
   "source": [
    "batch_size = 128\n",
    "epochs = 100\n",
    "\n",
    "# build  DNN model\n",
    "bim_model =  tf.keras.models.Sequential ()\n",
    "bim_model.add(Dense(64,input_shape=(7,1)))\n",
    "# bim_model.add(BatchNormalization(axis=2))\n",
    "bim_model.add(PReLU())\n",
    "bim_model.add(Dropout(0.3))\n",
    "\n",
    "\n",
    "bim_model.add(Dense(64))\n",
    "bim_model.add(PReLU())\n",
    "bim_model.add(Dropout(0.3))\n",
    "\n",
    "\n",
    "bim_model.add(Flatten())\n",
    "bim_model.add(Dense(64))\n",
    "bim_model.add(PReLU())\n",
    "bim_model.add(Dropout(0.5))\n",
    "bim_model.add(Dense(1))\n",
    "\n",
    "\n",
    "bim_model.compile(loss=keras.losses.mean_squared_error, optimizer=tf.keras.optimizers.Adam(learning_rate=1e-3),metrics=['mae'])\n",
    "bim_model.summary()\n",
    "\n",
    "checkpointer = keras.callbacks.ModelCheckpoint('bim_DNN.h5', monitor='val_loss', verbose=2, save_best_only=True, save_weights_only=False, mode='min', period=1)\n",
    "\n",
    "class TestCallback(keras.callbacks.Callback):\n",
    "    def __init__(self, test_data):\n",
    "        self.test_data = test_data\n",
    "\n",
    "    def on_epoch_end(self, epoch, logs={}):\n",
    "        x, y = self.test_data\n",
    "        loss, acc = self.model.evaluate(x, y, verbose=0)\n",
    "        print('\\nTesting loss: {}, acc: {}\\n'.format(loss, acc))\n",
    "\n",
    "train_dropout = bim_model.fit(train_X, train_label, batch_size=batch_size,epochs=epochs,verbose=2,validation_data=(valid_X, valid_label),callbacks=[TestCallback((test_X,test_Y)),checkpointer])\n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "35388f0b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x2b6fba3a0>"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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PXv2+G1Xu/lp5syZcjgc2rFjhzIyMhQbG6szzzxTzz77bJ1yr1u3TgMHDlRUVJR69uypRYsW6eabb9all17aXG9NSKCmBgCARliyZIl69+6tZ599VmFhYUpOTlZRUZEqKio0c+ZMpaamqqCgQEuXLtUFF1ygbdu2qUOHDifd52uvvab09HTNnz9fbrdbv/3tb3X99dfr008/PWV5rr76at1yyy367W9/q3fffVfTpk1Tv379NHr0aEnStm3bNG7cOA0ZMkRvvPGG3G63fve736mgoEBnnnlms7wnoYJQAwAIOI9HKioK3P7j46Um9r9tkjVr1vj1r0lMTNSLL77ovV9VVaUrr7xS/fv31+uvv65p06addH8RERFatWqVIiIivOsmTpyo/fv3q1OnTid97v3336/JkydLki6//HL97W9/0/Lly72hZtasWUpISFBWVpZiYmIkScOHD1f37t0JNQAANFZRkZSYGLj9FxRILXWlhiuuuKLeDsMrVqxQZmamtm/frry8PO/67du3n3KfY8aM8Qs0Z599tiQpJyfnlKFm3LhxfvfPPvts5eTkeO9v2rRJY8eO9QYaSUpLS9OFF16o6urqU5atNSHUAAACLj7eCB6B3H9LSU1NrbNu1apVmjhxon7961/r4YcfVps2bRQWFqbbbrtNZWVlp9xnSkqK330zNDX1ub7PO3jwoNq3b1/neR06dNDBgwdPuf/WhFADAAg4h6PlalICrb55Zt544w1deumlmj9/vt/6o0ePtlSxTigtLU25ubl11h8+fDgIpQksRj8BAHCajh8/XqdJas2aNdq3b1+QSlRj2LBhWr16tY4fP+5dd/DgQW3cuDGIpQoMQg0AAKfpyiuv1Nq1azVz5kx9+OGHeuaZZzRp0qRT9odpCQ899JAKCgqUkZGhv/71r1q+fLnGjBmj9u3bKyzMWjHAWq8GAIAguO222/TII49o8eLFGjdunN544w0tX75cPXv2DHbR1LdvX7333nsqKirStddeq//5n//R1KlTNXjwYCUGsvd2EDjWr1/vCXYhTkdJSYnGjx+vgoICJVilwRYAWoHCwkIlJiby+dsKFRUVqVevXt6OzYFwqt8P8/FVq1YpNja2WY5JR2EAACzuN7/5jS688EJ17NhR+/fv17x581RWVqZbb7012EVrVoQaAAAsrrS0VA888IByc3MVFRWliy66SC+//LI6duwY7KI1K0INAAAWt2jRomAXoUXQURgAAFgCoQYAAFgCoQYAAFgCoQYAAFgCoQYAAFgCoQYAAFgCoQYAAFgCoQYAAEm/+MUv1LZtW1VUVNT7eFFRkWJjYzV58uQG7a9bt26aOXOm9/7MmTPVrVu3Uz5vyZIlcjgcDTqGrz179mjmzJn697//fcqyWBWhBgAASTfddJOOHj2q9957r97HV6xYoePHj+umm25q0v5vu+02rVy58nSKeFJ79uzRY489Vm+oWblypW677baAHTtUEGoAAJA0fvx4tWnTRkuXLq338aVLl6pr164aMWJEk/Z/xhlnaODAgadTxCYbOHCgzjjjjKAcuyURagAAkORyufT//t//03vvvadjx475PbZ37179/e9/16RJk/TOO+8oIyNDqampio2N1dlnn61nn31W1dXVJ91/fc1Pe/bs0fjx4xUTE6P27dvrvvvuk9vtrvPcJ598UkOHDlVycrKSk5N14YUXKisry/v4Rx99pJEjR0qSRo8eLYfDIYfDoY8++khS/c1Pa9eu1bBhwxQdHa2kpCRdffXV+v777/22ufTSS3XxxRcrKytLAwYMUExMjAYOHKgPP/zwpK81WAg1AAD85KabbpLb7dabb77pt37ZsmXyeDyaNGmSdu3apYyMDP3xj3/Ue++9p9tvv12///3v9fDDDzfqWBUVFRo9erS+/vprLViwQK+88oq+//57/e53v6uz7Z49e/SrX/1KK1as0JtvvqkRI0Zo/PjxWrt2rSRp0KBBWrBggSTpueee06ZNm7Rp0yYNGjSo3mOvXbtWY8eOVUJCgt5880298MIL+uc//6mLLrpIBw8e9Nt2165duvfee/Xb3/5Wb7/9ttq2basJEybUCX6hgAtaAgACz+ORiooCt//4eKkJnWtrO//889WvXz8tXbpUd955p3f9a6+9posuukg9e/bUvffe613v8Xh08cUXKzk5WXfffbdmzZrV4E6+r776qrKzs7Vp0yZdcMEFkqQrr7xSZ599dp1tX3jhBe/P1dXVuuyyy3TkyBG98MILGjNmjBISEtSvXz9JUt++fb37O5EZM2bozDPP1OrVq+V0OiVJw4YNU+/evfW///u/evrpp73b/vjjj9qwYYN69eolyQhQaWlpev/993X99dc36LW2FGpqAACBV1QkJSYGbmnGwDRp0iR99tln3qaYf/zjH9q+fbu3g/ChQ4d01113qVu3bnK5XIqIiNCkSZOUn5+vw4cPN/g4GzduVOfOnf0CSFhYmK699to623799df6xS9+obS0NIWHhysiIkKLFy/W9u3bG/36SkpK9NVXX+mXv/ylN9BIUvfu3XXRRRd5m6xMvXr18gYaSWrfvr3at2+vnJycRh870Ag1AIDAi4+XCgoCt8THN1tRb7jhBoWFhXk7DC9dulRRUVG69tpr5fF49POf/1wffPCBHnnkEX344Yf64osvvE0/ZWVlDT7OwYMH1aFDhzrra6/bt2+fRo0apdLSUj3//PP69NNP9cUXX+iWW25p1PFMeXl58ng8Sk1NrfNYamqqjh496rcuJSWlznaRkZFNOnag0fwEAAg8h0NKSAh2KRqkU6dOuvzyy7Vs2TI9/PDDevPNNzVhwgQlJiYqOztbX3zxhT766CO/UVBbtmxp9HHS0tL03Xff1Vlfu7ZnzZo1Kisr07vvvqvIyEjv+vo6FDdEcnKyHA6HDh06VOexQ4cOqU2bNk3abyigpgYAgFpuuukm7dmzR9OnT9ePP/7obXo6fvy4JPmFC4/Ho8WLFzf6GMOGDVNOTo4+++wz77rq6motX77cb7vjx48rPDxcYWE1X9m5ubn661//6redWabS0tKTHjc2NlbnnXee/vznP6uqqsq7/ocfftDGjRt16aWXNvq1hApCDQAAtVx11VVKSEjQM888o7S0NI0ePVqSlJ6erm7duumOO+7QX//6V73zzjsaN26ccnNzG32Mm266SWeeeaauvvpqLVmyRKtXr9aECRNUWFjot93ll1+usrIyXX/99Vq3bp2WLVum4cOHq3379n7b9e7dW+Hh4frjH/+oTz/9VF9++aWKTtDXaNasWfr+++81fvx4vfvuu3r99dc1evRoJSUl6b777mv0awkVhBoAAGqJjo7WxIkT5fF4dP3113s71LpcLr3zzjtKTEzUf/7nf+pXv/qVevfureeee67Rx3C5XPrggw907rnn6q677tJNN92k7t2766GHHvLbrl+/fnrjjTf03Xffafz48Xr88cd1zz336IYbbvDbrk2bNpo/f762bNmiESNG6Pzzz9dXX31V77HHjBmj1atXKz8/XxMnTtQdd9yh/v3769NPP1VaWlqjX0uocKxfv94T7EKcjpKS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3d6qa2p8L6UgSQ888ICuv/56ZWdn06E4gObMmeN3f+rUqZo6daqKi4sVFxenzz//XLm5uXrppZcUExOj7t27a8uWLVq5cqW39gDN69ChQ1qyZInmz5+va6+91ruec9GyFi9erOHDh2vy5MnedV27dpXEuWhp27Zt0/jx470jZm+55Ra99dZbysnJUV5eHucigEaPHi1J2rx5c53HGvJ3cDrf7a22poZLKYSOgoICuVwuRUdHS5K2b9+u9PR0xcTEeLcZNGiQtm3bFqwiWlp1dbXmzJmjm2++uc70BpyLllNVVaUvvvhCqampmjZtmq6++mrdf//92rVrlyTORUvr37+/Pv30UxUUFKiqqkqrV69W27Zt1b17d85FEJ3qvT/d7/ZWG2oacykFBI7b7dbSpUuVkZHhbTPNy8urM0ki5yVwVqxYoejoaF155ZV1HuNctJyCggKVlZXpzTff1GWXXaY5c+aoXbt2uu+++1RcXMy5aGF33323EhMTNWHCBI0ZM0Z/+tOf9MQTTyg6OppzEUSneu9P97u91Yaa5rxWBJqmqqpKs2fPliTdeeedQS6NPf3www9avny57rvvvmAXxfaqq6slSSNGjNDPf/5z9e7dW/fdd58cDoc2btwY5NLZz1tvvaV9+/bp6aef1sKFCzVq1CjNmDFDBQUFwS4aTuJ0v9tbbZ+axlxKAc2vurpac+fO1d69ezVv3jxv05MkJScna+/evX7bc14CY9u2bTp27Jh++ctf+q1/4IEHNHLkSKWlpXEuWoj5meR7Hbrw8HClpaUpNzeXv4sWVF5erldeeUVPP/20d7RTr1699Nlnn+lvf/sb5yKITvXen+53e6utqfG9lILpRJdSQPPyeDx66qmntHXrVj399NNKSEjwezw9PV07duzwXmxUkr755hv17du3pYtqeRdffLEWL16sRYsWeRdJuvfeezVlyhTORQuKiIhQr169tH//fu+6qqoqHTp0SB06dOBctKDKykpVVlYqLMz/K87hcKi6uppzEUSneu9P97u91YYaybiUwltvvaWPP/5Y2dnZeuqpp7iUQgvIzMzUpk2bNGPGDEnSsWPHdOzYMVVVVUmShgwZorZt22ru3LnavXu3Vq9erQ8//FBXXXVVMIttSXFxcerevbvfIkmpqalq164d56KFXXPNNVq3bp0++OAD5eTkaP78+ZKkCy+8kHPRgmJjY3XWWWfphRde0NatW7V//34tXrxYhw4d0vnnn8+5CLDCwkJlZ2d7A352drays7NVWlraoPf+dL7bW/2Mwv/3f//nN0HP/fffz+R7ATZy5Mh617/++utKTU2VJO3du9c7uVJKSopuvPFGjRs3riWLaVsjR470m3yPc9GyVqxYoT//+c8qKipSnz59dPfdd3vDJuei5Rw5ckQLFy7UN998o9LSUnXt2lU333yzLrjgAkmci0Bas2aN5s6dW2f9M888o3PPPbdB731Tv9tbfagBAACQWnnzEwAAgIlQAwAALIFQAwAALIFQAwAALIFQAwAALIFQAwAALIFQAwAALIFQAwAALIFQA8BS1qxZo4kTJwa7GACCoNVepRtA6Jo2bZq2bNlSZ/3DDz+syy67LAglAmAHhBoAAXHNNdfouuuu81sXFxcXpNIAsANCDYCAiIqKqvcCdGvWrNHixYt1++23a9GiRSoqKtKoUaN0zz33KCIiQpJx5fdnn31W//jHPxQeHq7hw4frN7/5jaKjoyVJVVVVevXVV5WVlaW8vDylpaVpypQpuvDCC73H+fvf/66FCxeqqKhIw4cP13/913/J5XK1zIsHEBSEGgAtrrCwUKtXr9bs2bOVn5+vOXPmqG3btrr55pslSU888YSKi4s1b948ud1uzZ07VwsWLND9998vSXrllVf0/vvv65577lGPHj20b98+ORwOv/1nZWXp97//vQoKCjRz5kz16tVLV199dTBeLoAWQqgBEBBvvPGGVqxY4bdu8eLFkiS32617771XXbp0kSRNnjxZL730km6++Wbt3btXX375pV555RV169ZNknT33XfrwQcf1B133KGIiAgtX75cM2bM0CWXXCJJ6tSpk99xKioqdP/993trii655BJt2bKFUANYHKEGQECMGzeuziik9u3bS5JiYmK8gUaS0tPTVVhYqIKCAu3du1cxMTHeQCNJ/fr1U1VVlQ4cOKDw8HBVVFTo3HPPPeGxk5KS/Jq+UlJStHfv3uZ5YQBCFqEGQEDEx8fXqUEx+TYVNYTv9h6P55TbO53OOs+vrq5u1DEBtD7MUwOgxZWUlPjVnGzfvl0JCQlKTExUly5ddPz4ce3Zs8f7+HfffSen06mOHTvqjDPOUEREhDZv3tzyBQcQ0qipARAQZWVlOnbsmN86c/SSy+XSvHnzdNddd6mgoEBLlizRhAkTJEldunTReeedpyeffFL33HOP3G63nn/+eV1xxRXeIeHXXnutnn/+eTkcDvXq1Uv79u2Tx+PRkCFDWvQ1AggthBoAAbFixYo6HYVvv/12paSkKCEhQWPGjNH06dNVXFyskSNH6vrrr/duN336dM2bN0/Tpk2T0+nUJZdcol//+tfexydPnixJeu6551RYWKiOHTtqypQpLfPCAIQsx/r160/dQA0AzcScp+bPf/5zsIsCwGLoUwMAACyBUAMAACyB5icAAGAJ1NQAAABLINQAAABLINQAAABLINQAAABLINQAAABLINQAAABL+P9t0UdLioU1EwAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "\n",
    "accuracy = train_dropout.history['mae']\n",
    "val_accuracy = train_dropout.history['val_mae']\n",
    "loss = train_dropout.history['loss']\n",
    "val_loss = train_dropout.history['val_loss']\n",
    "epochs = range(len(accuracy))\n",
    "\n",
    "plt.plot(epochs, accuracy, 'b', label='Training')\n",
    "plt.plot(epochs, val_accuracy, 'r', label='Validation')\n",
    "plt.title('DNN')\n",
    "plt.xlabel(\"Epoch\")\n",
    "plt.ylabel(\"MAE\")\n",
    "\n",
    "plt.legend()\n",
    "plt.savefig(fname=\"accuracy.jpg\",dpi=100)\n",
    "\n",
    "plt.figure()\n",
    "plt.plot(epochs, loss, 'b', label='Training')\n",
    "plt.plot(epochs, val_loss, 'r', label='Validation')\n",
    "plt.xlabel(\"Epoch\")\n",
    "plt.ylabel(\"MSE\")\n",
    "plt.title('DNN')\n",
    "plt.legend()\n",
    "# plt.savefig(fname=\"loss.jpg\",dpi=100)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "74cb3b72",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.18"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
